home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d26 / lesson.arc / LESSON.BAS next >
BASIC Source File  |  1987-10-17  |  23KB  |  1,044 lines

  1. ' --------------------------------------------
  2. ' LESSON.BAS   file last modified on 10/17/87
  3. ' by Jeff Thomas
  4. ' Box 1029
  5. ' Hopatcong High School
  6. ' Hopatcong, New Jersey  07843
  7. ' --------------------------------------------
  8. TOP:
  9. KEY OFF
  10. ON ERROR GOTO TRAP
  11. OPEN"i",1,"teco.fil"
  12. input#1,lessondays%
  13. INPUT#1,ID$
  14. INPUT#1,C1$
  15. INPUT#1,C2$
  16. INPUT#1,C3$
  17. CLOSE
  18. DIM VL.SS$(12), LO.SS%(12,2)
  19. DIM LE.SS%(12), TY.SS$(12)
  20. DIM PIC.SS$(12),RG.SS(12,2)
  21. DIM CL.SS%(12,2), SPECCHR.SS%(12)
  22. DIM A$(12),B$(12)
  23. DIM C$(30,12),T$(15)
  24. DIM DA$(5)
  25. SD.SS%=1
  26. NUMSCR.SS%=1
  27. BLNK.SS$=SPACE$(78)
  28. DEF SEG=&H40:MONO.SS=(PEEK(&H10) AND &H30)=&H30
  29. IF MONO.SS THEN
  30.     SCRNSEG.SS%=&HB000
  31.     ELSE
  32.     SCRNSEG.SS%=&HB800
  33. END IF
  34. WIDTH"lpt1:",150
  35. OPEN"r",1,"lesson.fil",480
  36. FIELD 1,40 AS B$(1),40 AS B$(2),40 AS B$(3),_
  37. 40 AS B$(4),40 AS B$(5),40 AS B$(6),_
  38. 40 AS B$(7),40 AS B$(8),40 AS B$(9),_
  39. 40 AS B$(10),40 AS B$(11),40 AS B$(12)
  40. MENU:
  41. CLS
  42. call drawit(3,0,2,20,18,56)
  43. COLOR 3,0
  44. LOCATE 4,32
  45. ? "LESSON PLANS"
  46. LOCATE 6,25
  47. ? "V 2 by Jeff Thomas 10/11/87"
  48. LOCATE 8,34
  49. ? "Create"
  50. LOCATE 10,34
  51. ? "Enter"
  52. LOCATE 12,34
  53. ? "Print"
  54. LOCATE 14,34
  55. ? "Modify"
  56. LOCATE 16,34
  57. ? "Help   Quit"
  58. COLOR 14,0
  59. LOCATE 8,34 : ?"C";
  60. LOCATE 10,34 : ?"E";
  61. LOCATE 12,34 : ?"P";
  62. LOCATE 14,34 : ?"M";
  63. LOCATE 16,34 : ?"H";
  64. LOCATE 16,41 : ?"Q";
  65. ROW=8
  66. CH=1
  67. COLOR 15,0
  68. ARROW:
  69. LOCATE ROW,28
  70. PRINT"==> ";
  71. INLOOP1:
  72. CH$=INKEY$ : IF CH$ = "" THEN INLOOP1
  73. IF LEN(CH$) = 1 THEN
  74.     CH$=UCASE$(CH$)
  75.     IF CH$=CHR$(13) THEN ENTER
  76.     IF CH$ = "C" THEN
  77.         LOCATE ROW,28
  78.         ?"     ";
  79.         LOCATE 8,28
  80.         ?"==> ";
  81.         GOTO CREATELESSONFILE
  82.     END IF
  83.     IF CH$ = "E" THEN
  84.         LOCATE ROW,28
  85.         ?"     ";
  86.         LOCATE 10,28
  87.         ?"==> ";
  88.         GOTO ENTERLESSONS
  89.     END IF
  90.     IF CH$ = "P" THEN
  91.         LOCATE ROW,28
  92.         ?"     ";
  93.         LOCATE 12,28
  94.         ?"==> ";
  95.         GOTO PRINTLESSONS
  96.     END IF
  97.     IF CH$ = "M" THEN
  98.         LOCATE ROW,28
  99.         ?"     ";
  100.         LOCATE 14,28
  101.         ?"==> ";
  102.         GOTO EDITLESSONS
  103.     END IF
  104.     IF CH$ = "H" THEN
  105.         LOCATE ROW,28
  106.         ?"     ";
  107.         LOCATE 16,28
  108.         ?"==> ";
  109.         GOTO HELP
  110.     END IF
  111.     IF CH$ = "Q" THEN
  112.         LOCATE ROW,28
  113.         ?"     ";
  114.         LOCATE 16,28
  115.         ?"==> ";
  116.         GOTO QUIT
  117.     END IF
  118.     BEEP
  119.     GOTO INLOOP1
  120. END IF
  121. IF RIGHT$(CH$,1)="P" THEN
  122.     LOCATE ROW,28
  123.     PRINT"     ";
  124.     ROW=ROW+2
  125.     CH=CH+1
  126.     IF CH>5 THEN
  127.         CH=1
  128.         ROW=8
  129.     END IF
  130.     GOTO ARROW
  131. END IF
  132. IF RIGHT$(CH$,1)="H" THEN
  133.     LOCATE ROW,28
  134.     PRINT"     ";
  135.     ROW=ROW-2
  136.     CH=CH-1
  137.     IF CH<1 THEN
  138.         CH=5
  139.         ROW=16
  140.     END IF
  141.     GOTO ARROW
  142. END IF
  143. GOTO INLOOP1
  144. ENTER:
  145. ON CH GOTO CREATELESSONFILE,ENTERLESSONS,PRINTLESSONS,EDITLESSONS,HELP
  146. QUIT:
  147. COLOR 14,0
  148. CLOSE
  149. LOCATE 20,1
  150. ? STRING$(79,32)
  151. LOCATE 20,15
  152. PRINT"Have a good week...Hope your lessons go well!"
  153. LOCATE 22,1
  154. END
  155. ENTERLESSONS:
  156. COLOR 14,0
  157. LOCATE 20,1
  158. PRINT STRING$(79,32);
  159. LOCATE 20,1,1,0,7
  160. PRINT"What lesson day are you working on ( 1 -"lessondays%") ";
  161. INPUT LD
  162. IF LD <1 OR LD > lessondays% THEN
  163.     BEEP
  164.     GOTO ENTERLESSONS
  165. END IF
  166. REC = LD * 3 - 3 + 1
  167. FOR J = 1 TO 3
  168.     FOR I=1 TO 12
  169.         A$(I) = ""
  170.     NEXT
  171.     GET 1,REC
  172.     FOR I = 1 TO 12
  173.         A$(I) = B$(I)
  174.     NEXT
  175.     SCR.SS% = 1
  176.     INIT.SS% = -1
  177.     GOSUB FULLSCREENEDIT
  178.     FOR I = 1 TO 12
  179.         LSET B$(I) = A$(I)
  180.         PUT 1,REC
  181.     NEXT I
  182.     REC = REC + 1
  183. NEXT J
  184. CLOSE
  185. RUN
  186. PRINTLESSONS:
  187. TRYAGAIN:
  188. CLS
  189. LOCATE 3,1
  190. COLOR 3,0
  191. CLS
  192. FOR I=1 TO 12
  193.     A$(I) = ""
  194. NEXT
  195. OPEN"I",2,"WEEK.FIL"
  196. INPUT#2,A$(1)
  197. INPUT#2,A$(2)
  198. FOR I=1 TO VAL(A$(2))
  199.     INPUT#2,A$(I+2)
  200. NEXT
  201. CLOSE#2
  202. SCR.SS% = 1
  203. INIT.SS% = -1
  204. DIFSCRN = 1
  205. GOSUB FULLSCREENEDIT
  206. DIFSCRN = 0
  207. OPEN"O",2,"WEEK.FIL"
  208. X = INSTR(A$(1),"  ")
  209. DA$ = LEFT$(A$(1),X-1)
  210. PRINT#2,CHR$(34)DA$CHR$(34)
  211. NUMBEROFDAYS = VAL(A$(2))
  212. PRINT#2,NUMBEROFDAYS
  213. FOR I=1 TO NUMBEROFDAYS
  214.     X = INSTR(A$(I+2),"  ")
  215.     DA$(I) = LEFT$(A$(I+2),X-1)    
  216.     PRINT#2,CHR$(34)DA$(I)CHR$(34)
  217. NEXT
  218. CLOSE#2
  219. D=1
  220. FOR I=1 TO NUMBEROFDAYS * 3 STEP 3
  221.     T$(I) = C1$+" "+DA$(D)
  222.     T$(I+1) = C2$+" "+DA$(D)
  223.     T$(I+2) = C3$+" "+DA$(D)    
  224.         D=D+1
  225. NEXT
  226. HD$ = id$ + "--> DATES INCLUSIVE " + DA$
  227. LOCATE 25,1
  228. ? STRING$(79,32);
  229. LOCATE 18,1
  230. ? STRING$(79,32);
  231. LOCATE 18,1,1,0,7
  232. COLOR 3,0
  233. PRINT"What lesson day do you want to start with ( 1 -"lessondays%") ";
  234. INPUT START
  235. IF START < 1 OR START > lessondays% THEN
  236.     BEEP
  237.     GOTO PRINTLESSONS
  238. END IF
  239. FINISH = NUMBEROFDAYS
  240. INLOOP2:
  241. LOCATE 18,1
  242. ? STRING$(79,32);
  243. LOCATE 18,1
  244. PRINT"Which condensed font control code"
  245. ?"    <1> CHR$(15) for an IBM printer"
  246. ?"    <2> CHR$(27)CHR$(20) for a Tandy printer"
  247. ?"    <3> None (15 inch paper) ";
  248. GETTYPE:
  249. type$ = input$(1)
  250. select case type$
  251. case "1"
  252.     LPRINT CHR$(15);
  253.     GOTO GOODINPUT
  254. case "2"
  255.     LPRINT CHR$(27)CHR$(20);
  256.     GOTO GOODINPUT
  257. case "3"
  258.     goto GOODINPUT
  259. CASE ELSE
  260.     GOTO GETTYPE
  261. end select
  262. GOODINPUT:
  263. LOCATE 18,1,0,0,0
  264. ? STRING$(79,32);
  265. LOCATE 19,1
  266. ? STRING$(79,32);
  267. LOCATE 20,1
  268. ? STRING$(79,32);
  269. LOCATE 21,1
  270. ? STRING$(79,32);
  271. LOCATE 18,1
  272. PRINT"Now printing...press ESC to abort...";
  273. NUMREC = FINISH * 3
  274. START = START * 3 - 2
  275. ENTRYCOUNT = 0
  276. ROW = 7
  277. COL = 20
  278. MAX = 45
  279. COUNT = 1
  280. DAY = 1
  281. FOR REC = START TO NUMREC + START -1
  282.     IF COUNT = 4 OR COUNT=7 OR COUNT=10 OR COUNT=13 THEN DAY=DAY+1
  283.     X = LEN(T$(COUNT))
  284.     ADD =MAX - X
  285.     T$(COUNT) =T$(COUNT) + STRING$(ADD,"-")
  286.     COUNT = COUNT + 1
  287. NEXT REC
  288. COUNT=1
  289. FOR REC = START TO NUMREC + START - 1
  290.     GET 1,REC
  291.     FOR ROW=1 TO 12
  292.         C$(COUNT,ROW) = B$(ROW)
  293.     NEXT ROW
  294.     COUNT = COUNT+1
  295. NEXT REC
  296. LPRINT HD$
  297. COUNT = 1
  298. FOR REC = START TO NUMREC + START - 1 STEP 3
  299.     AK$=INKEY$:IF AK$=CHR$(27) THEN QUITPRINTING:
  300.     LPRINT T$(COUNT) T$(COUNT+1) T$(COUNT+2)
  301.     AK$=INKEY$:IF AK$=CHR$(27) THEN QUITPRINTING:
  302.     FOR ROW=1 TO 12
  303.         AK$=INKEY$:IF AK$=CHR$(27) THEN QUITPRINTING:
  304.         LPRINT C$(COUNT,ROW)TAB(45)C$(COUNT+1,ROW)_
  305.         TAB(90)C$(COUNT+2,ROW)
  306.         AK$=INKEY$:IF AK$=CHR$(27) THEN QUITPRINTING:
  307.     NEXT ROW
  308.     COUNT=COUNT+3
  309.     AK$=INKEY$:IF AK$=CHR$(27) THEN QUITPRINTING:
  310. NEXT REC
  311. QUITPRINTING:
  312. CLOSE
  313. RUN
  314. EDITLESSONS:
  315. COLOR 14,0
  316. LOCATE 20,1
  317. ? STRING$(78,32);
  318. LOCATE 20,1,1,0,7
  319. PRINT"What lesson day to modify ( 1 -"lessondays%") ";
  320. INPUT LD
  321. IF LD < 1 OR ld > lessondays% THEN
  322.     BEEP
  323.     GOTO EDITLESSONS
  324. END IF
  325. REC = LD * 3 - 3 + 1
  326. LOCATE 20,1,0,0,0
  327. ? STRING$(78,32);
  328. LOCATE 20,30
  329. ? "What course ?"
  330. ? TAB(30)"1. "C1$
  331. ? TAB(30)"2. "C2$
  332. ? TAB(30)"3. "C3$"  ";
  333. INLOOP3:
  334. WC$ = INKEY$
  335. IF WC$="" THEN INLOOP3
  336. J = VAL(WC$)
  337. IF J < 1 OR J > 3 THEN BEEP:GOTO INLOOP3
  338. ? J;
  339. REC = REC + J - 1
  340. GET 1,REC
  341. FOR I = 1 TO 12
  342.     A$(I) = B$(I)
  343. NEXT
  344. SCR.SS% = 1
  345. INIT.SS% = -1
  346. GOSUB FULLSCREENEDIT
  347. FOR I = 1 TO 12
  348.     LSET B$(I)=A$(I)
  349. NEXT
  350. PUT 1,REC
  351. CLOSE
  352. RUN
  353. FULLSCREENEDIT:
  354. IF SAME.SS% THEN RETURNTOSAMESCREEN
  355. IF DIFSCRN = 0 THEN NUMFLDS.SS% = 12
  356. IF DIFSCRN = 1 THEN NUMFLDS.SS% = 7
  357. FILNM.SS$ = "PLANS.SCR"
  358. EXITCHR.SS$ = CHR$(27) + CHR$(127) + ""
  359. FOR F.SS% = 1 TO NUMFLDS.SS%
  360.     LO.SS%(F.SS%,2) = 23
  361.     LO.SS%(F.SS%,1) = f.ss%+8
  362.     LE.SS%(F.SS%) = 40
  363.     TY.SS$(F.SS%) = "C"
  364.     PIC.SS$(F.SS%) = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  365.     RG.SS(F.SS%,1) = 0
  366.     RG.SS(F.SS%,2) = 0
  367.     CL.SS%(F.SS%,1) = 11
  368.     CL.SS%(F.SS%,2) = 0
  369.     SPECCHR.SS%(F.SS%) = 0
  370. NEXT F.SS%
  371. OUT &H3D8,&H1
  372. DEF SEG=SCRNSEG.SS%
  373. BLOAD FILNM.SS$,0
  374. DEF SEG
  375. FOR I=1 TO 12
  376.     VL.SS$(I) = A$(I)
  377. NEXT
  378. OUT &H3D8,&H29
  379. GOSUB SETUPSCREEN
  380. OUT &H3D8,&H29
  381. F.SS%=1
  382. SCRLST.SS%=SCR.SS%
  383. RETURNTOSAMESCREEN:
  384. COLOR 7,0:LOCATE 25,1:PRINT BLNK.SS$;
  385. IF NUMFLDS.SS%=0 THEN RETURN
  386. EXSCR.SS%=0
  387. COL=38-LEN(ID$)/2
  388. COLOR 11,0
  389. LOCATE 5,COL
  390. PRINT ID$
  391. IF DIFSCRN = 0 THEN
  392.     LOCATE 7,15
  393.     PRINT"Lesson for day #"LD" --> ";
  394.     IF J = 1 THEN T$ = C1$
  395.     IF J = 2 THEN T$ = C2$
  396.     IF J = 3 THEN T$ = C3$
  397.     PRINT T$
  398. END IF
  399. IF DIFSCRN = 1 THEN
  400.     ROW = 16
  401.     FOR I=1 TO 5
  402.         LOCATE ROW,16,0,0,0 : ?"  ";
  403.         ROW = ROW + 1
  404.     NEXT
  405.     LOCATE 18,14
  406.     ? "Please modify your WEEK.fil"
  407.     LOCATE 9,1
  408.     ? "   Inclusive";
  409.     LOCATE 10,1
  410.     ? "   # of days";
  411.     LOCATE 11,1
  412.     ? "1st Day/date"
  413.     ? "2nd Day/date"
  414.     ? "3rd Day/date"
  415.     ? "4th Day/date"
  416.     ? "5th Day/date"
  417. END IF
  418. INPUTSCREENDATA:
  419. WHILE NOT EXSCR.SS%
  420.     locate 11,20,1,0,7
  421.     GOSUB ACCEPTINPUTDATA
  422. WEND
  423. COLOR 7,0
  424. LOCATE 25,1,0,0,0
  425. PRINT BLNK.SS$;
  426. LOCATE 25,15,0,0,0
  427. ? "... Please WAIT A Moment While Checking Fields ...";
  428. FOR F.SS%=1 TO NUMFLDS.SS%
  429.     IF ERR.MSG%=-1 THEN
  430.         EXSCR.SS%=0
  431.         GOTO INPUTSCREENDATA
  432.     END IF
  433. NEXT F.SS%
  434. F.SS%=FLDLST.SS%
  435. FOR I=1 TO 12
  436.     A$(I) = VL.SS$(I)
  437. NEXT
  438. RETURN
  439. SETUPSCREEN:
  440. FOR F.SS%=1 TO NUMFLDS.SS%
  441.     IF LEN(VL.SS$(F.SS%))>LE.SS%(F.SS%) THEN
  442.         VL.SS$(F.SS%)=LEFT$(VL.SS$(F.SS%),LE.SS%(F.SS%))
  443.     END IF
  444.     IF LEN(VL.SS$(F.SS%))<=LE.SS%(F.SS%) THEN
  445.         VL.SS$(F.SS%)=VL.SS$(F.SS%)+MID$(BLNK.SS$,1,LE.SS%(F.SS%)-_
  446.         LEN(VL.SS$(F.SS%)))
  447.     END IF
  448.     GOSUB PRINTNEWVALUEOFFIELD
  449. NEXT F.SS%
  450. RETURN
  451. ACCEPTINPUTDATA:
  452. IF TY.SS$(F.SS%)<>"N" THEN
  453.     A.SS%=1
  454.     GOTO  LOOKFORNONEDITCHARACTERS
  455. END IF
  456. NEWNUM%=-1
  457. SIGN.ON%=0
  458. NUMED.SS%=0
  459. DECPOS%=INSTR(PIC.SS$(F.SS%),".")
  460. IF DECPOS%=0 THEN DECPOS%=LE.SS%(F.SS%)+1
  461. A.SS%=DECPOS%-1
  462. LOOKFORNONEDITCHARACTERS:
  463. WHILE INSTR("ULX#98.",MID$(PIC.SS$(F.SS%),A.SS%,1))=0
  464.     A.SS%=A.SS%+1
  465. WEND
  466. CURCOL%=LO.SS%(F.SS%,2)+A.SS%-1
  467. LOCATE LO.SS%(F.SS%,1),CURCOL%
  468. FLDLST.SS% = F.SS%
  469. EXFLD.SS%=0
  470. WHILE NOT EXFLD.SS%
  471. INLOOP5:
  472. X.SS$=INKEY$
  473. IF X.SS$="" THEN INLOOP5
  474. IF ERR.MSG% THEN
  475.     ERR.MSG%=0
  476.     COLOR 7,0
  477.     LOCATE 25,1
  478.     PRINT STRING$(79," ");
  479. END IF
  480. IF LEN(X.SS$)>1 OR INSTR(CHR$(8)+CHR$(13)+CHR$(27),X.SS$)<>0 THEN
  481.     X.SS$=RIGHT$(X.SS$,1)
  482.     ELSE
  483.     GOTO EXTENDEDKEY
  484. END IF
  485. IF TY.SS$(F.SS%)<>"N" THEN SPECIALTEST
  486. IF INSTR("GO",X.SS$)<>0 THEN CODESNOTVALID
  487. IF INSTR("RKM"+CHR$(8),X.SS$)<>0 THEN NUMED.SS%=-1:NEWNUM%=0
  488. SPECIALTEST:
  489. IF INSTR(EXITCHR.SS$,X.SS$)<>0 THEN
  490.     EXFLD.SS%=-1
  491.     EXSCR.SS%=-1
  492.     GOTO EXITSCREEN
  493. END IF
  494. ON INSTR("MKHPGRSO"+CHR$(8)+CHR$(13),X.SS$)_
  495. GOSUB RIGHT,LEFT,UP,DOWN,HOME,INS,DEL,ENDKEY,LEFT,DOWN:_
  496. GOTO CHECKFORERROR
  497. GOTO CODESNOTVALID
  498. EXTENDEDKEY:
  499. IF TY.SS$(F.SS%)="N" AND X.SS$="." THEN
  500.     NEWNUM%=0
  501.     NUMED.SS%=-1
  502.     GOTO NEXTPOSITION
  503. END IF
  504. IF ASC(X.SS$)<32 OR ASC(X.SS$)>126 THEN GOTO CODESNOTVALID
  505. GOSUB TYPECONVERSION
  506. IF ERR.MSG% THEN CODESNOTVALID
  507. GOSUB ADDCHARACTERS
  508. GOSUB PRINTNEWVALUEOFFIELD
  509. NEXTPOSITION:
  510. GOSUB NEWLOCATION
  511. CHECKFORERROR:
  512. IF ERR.MSG% THEN  ACCEPTINPUTDATA
  513. CODESNOTVALID:
  514. WEND
  515. EXITSCREEN:
  516. LASTCHR.SS$=X.SS$
  517. RETURN
  518. RIGHT:
  519. GOSUB NEWLOCATION
  520. RETURN
  521. LEFT:
  522. IF CURCOL%=LO.SS%(F.SS%,2) THEN GOTO UP
  523. IF TY.SS$(F.SS%)="N" AND MID$(VL.SS$(F.SS%),A.SS%-1,1)=" " THEN RETURN
  524. CURCOL%=CURCOL%-1
  525. A.SS%=A.SS%-1
  526. IF INSTR("ULX#89",MID$(PIC.SS$(F.SS%),A.SS%,1))=0 THEN GOTO LEFT
  527. LOCATE LO.SS%(F.SS%,1),CURCOL%
  528. RETURN
  529. UP:
  530. IF ERR.MSG% THEN RETURN
  531. EXFLD.SS%=-1
  532. IF F.SS%>1 THEN
  533.     F.SS%=F.SS%-1
  534.     ELSE
  535.     F.SS%=NUMFLDS.SS%
  536. END IF
  537. RETURN
  538. DOWN:
  539. IF ERR.MSG% THEN  RETURN
  540. EXFLD.SS%=-1
  541. IF F.SS%=NUMFLDS.SS% AND INSTR(EXITCHR.SS$,CHR$(127))<>0 THEN EXSCR.SS%=-1
  542. IF F.SS%<NUMFLDS.SS% THEN
  543.     F.SS%=F.SS%+1
  544.     ELSE
  545.     F.SS%=1
  546. END IF
  547. RETURN
  548. DEL:
  549. IF TY.SS$(F.SS%)="N" AND A.SS%<DECPOS% THEN
  550.     MID$(VL.SS$(F.SS%),1)=" "+LEFT$(VL.SS$(F.SS%),A.SS%-1)+_
  551.     RIGHT$(VL.SS$(F.SS%),LE.SS%(F.SS%)-A.SS%)
  552.     GOTO MOVELEFT
  553. END IF
  554. IF TY.SS$(F.SS%)="N" THEN
  555.     MID$(VL.SS$(F.SS%),1)=LEFT$(VL.SS$(F.SS%),A.SS%-1)+_
  556.     MID$(VL.SS$(F.SS%),A.SS%+1,LE.SS%(F.SS%)-A.SS%)+"0"
  557.     GOTO MOVELEFT
  558. END IF
  559. IF SPECCHR.SS%(F.SS%)=0 THEN
  560.     MID$(VL.SS$(F.SS%),1)=LEFT$(VL.SS$(F.SS%),A.SS%-1)+_
  561.     MID$(VL.SS$(F.SS%),A.SS%+1,LE.SS%(F.SS%)-A.SS%)+" "
  562.     GOTO MOVELEFT
  563. END IF
  564. CNT.SS%=0
  565. WHILE INSTR("ULX#89.",MID$(PIC.SS$(F.SS%),A.SS%+1+CNT.SS%,1))<>0 AND_
  566.     CNT.SS%<LE.SS%(F.SS%)-A.SS%
  567.     CNT.SS%=CNT.SS%+1
  568. WEND
  569. VL.SS$(F.SS%)=LEFT$(VL.SS$(F.SS%),A.SS%-1)+_
  570. MID$(VL.SS$(F.SS%),A.SS%+1,CNT.SS%)+" "+_
  571. RIGHT$(VL.SS$(F.SS%),LE.SS%(F.SS%)-A.SS%-CNT.SS%)
  572. MOVELEFT:
  573. CURCOL%=CURCOL%-1
  574. A.SS%=A.SS%-1
  575. GOSUB PRINTNEWVALUEOFFIELD
  576. GOSUB NEWLOCATION
  577. RETURN
  578. INS:
  579. IF TY.SS$(F.SS%)="N" AND A.SS%<DECPOS% THEN
  580.     MID$(VL.SS$(F.SS%),1)=MID$(VL.SS$(F.SS%),2,A.SS%-1)+_
  581.     "0"+RIGHT$(VL.SS$(F.SS%),LE.SS%(F.SS%)-A.SS%)
  582.     GOTO MOVE
  583. END IF
  584. IF TY.SS$(F.SS%)="N" THEN
  585.     VL.SS$(F.SS%)=LEFT$(VL.SS$(F.SS%),A.SS%-1)+"0"+_
  586.     MID$(VL.SS$(F.SS%),A.SS%,LE.SS%(F.SS%)-A.SS%)
  587.     GOTO MOVE
  588. END IF
  589. IF SPECCHR.SS%(F.SS%)=0 THEN
  590.     VL.SS$(F.SS%)=LEFT$(VL.SS$(F.SS%),A.SS%-1)+" "+_
  591.     MID$(VL.SS$(F.SS%),A.SS%,LE.SS%(F.SS%)-A.SS%)
  592.     GOTO MOVE
  593. END IF
  594. NEWVL$=LEFT$(VL.SS$(F.SS%),A.SS%-1)+" "
  595. NEXTCHR$=MID$(VL.SS$(F.SS%),A.SS%,1)
  596. FOR I%=A.SS%+1 TO LE.SS%(F.SS%)
  597.     X.SS$=MID$(PIC.SS$(F.SS%),I%,1)
  598.     IF INSTR("ULX#89.",X.SS$)=0 THEN
  599.         NEWVL$=NEWVL$+X.SS$
  600.         GOTO BREAKOUT
  601.     END IF
  602.     NEWVL$=NEWVL$+NEXTCHR$
  603.     NEXTCHR$=MID$(VL.SS$(F.SS%),I%,1)
  604. NEXT I%
  605. BREAKOUT:
  606. VL.SS$(F.SS%)=NEWVL$+MID$(VL.SS$(F.SS%),I%+1,LE.SS%(F.SS%))
  607. MOVE:
  608. CURCOL%=CURCOL%-1:A.SS%=A.SS%-1
  609. GOSUB PRINTNEWVALUEOFFIELD
  610. GOSUB NEWLOCATION
  611. RETURN
  612. ENDKEY:
  613. CURCOL%=LO.SS%(F.SS%,2)+LE.SS%(F.SS%)-1
  614. A.SS%=LE.SS%(F.SS%)
  615. WHILE INSTR("ULX#89.",MID$(PIC.SS$(F.SS%),A.SS%,1))=0
  616.     A.SS%=A.SS%-1
  617.     CURCOL%=CURCOL%-1
  618. WEND
  619. LOCATE LO.SS%(F.SS%,1),CURCOL%
  620. RETURN
  621. HOME:
  622. A.SS%=1
  623. WHILE INSTR("ULX#89.",MID$(PIC.SS$(F.SS%),A.SS%,1))=0
  624.     A.SS%=A.SS%+1
  625. WEND
  626. CURCOL%=LO.SS%(F.SS%,2)+A.SS%-1
  627. LOCATE LO.SS%(F.SS%,1),CURCOL%
  628. RETURN
  629. TYPECONVERSION:
  630. ON INSTR("NDMY",TY.SS$(F.SS%)) GOTO NUMERIC,NUMERICSPACE,MF,YN
  631. ON INSTR("ULX#89",MID$(PIC.SS$(F.SS%),A.SS%,1))_
  632. GOTO UC,LC,GETOUT,NUMERIC,NUMERICONLY,NUMERICSPACE
  633. PRINT "EDIT PICTURE TYPE ";MID$(PIC.SS$(F.SS%),A.SS%,1);" NOT FOUND"
  634. STOP
  635. NUMERIC:
  636. IF (ASC(X.SS$)>47 AND ASC(X.SS$)<58) OR X.SS$=" " THEN
  637.     SIGN.ON%=-1
  638.     RETURN
  639. END IF
  640. IF X.SS$<>"+" AND X.SS$<>"-" THEN ONLYMESSAGE
  641. IF SIGN.ON% THEN
  642.     MSG.SS$=""
  643.     GOSUB PRINTERRORMESSAGE
  644.     ELSE
  645.     SIGN.ON%=-1
  646. END IF
  647. RETURN
  648. ONLYMESSAGE:
  649. MSG.SS$=" Only numeric values can be entered here. Please re-enter. "
  650. GOSUB PRINTERRORMESSAGE
  651. RETURN
  652. UC:
  653. IF ASC(X.SS$)>96 AND ASC(X.SS$)<123 THEN X.SS$=CHR$(ASC(X.SS$)-32)
  654. GOTO GETOUT
  655. LC:
  656. IF ASC(X.SS$)>65 AND ASC(X.SS$)<91 THEN X.SS$=CHR$(ASC(X.SS$)+32)
  657. GOTO GETOUT
  658. YN:
  659. IF X.SS$="Y" OR X.SS$="y" THEN
  660.     X.SS$="Y"
  661.     GOTO GETOUT
  662. END IF
  663. IF X.SS$="N" OR X.SS$="n" THEN
  664.     X.SS$="N"
  665.     GOTO GETOUT
  666. END IF
  667. MSG.SS$=" Only 'Y' or 'N' can be entered here. Please re-enter. "
  668. GOTO PRINTERRORMESSAGE
  669. MF:
  670. IF X.SS$="M" OR X.SS$="m" THEN
  671.     X.SS$="M"
  672.     GOTO GETOUT
  673. END IF
  674. IF X.SS$="F" OR X.SS$="f" THEN
  675.     X.SS$="F"
  676.     GOTO GETOUT
  677. END IF
  678. MSG.SS$=" Only 'M' or 'F' can be entered here. Please re-enter. "
  679. GOTO PRINTERRORMESSAGE
  680. NUMERICONLY:
  681. IF (ASC(X.SS$)>47 AND ASC(X.SS$)<58) THEN GETOUT
  682. MSG.SS$=" Only numeric values can be entered here. Please re-enter. "
  683. GOTO PRINTERRORMESSAGE
  684. NUMERICSPACE:
  685. IF (ASC(X.SS$)>47 AND ASC(X.SS$)<58) OR X.SS$=" "  THEN GOTO GETOUT
  686. MSG.SS$=" Only numeric values or blanks can be entered here. Please re-enter. "
  687. GOTO PRINTERRORMESSAGE
  688. GETOUT:
  689. 3460 RETURN
  690. PRINTERRORMESSAGE:
  691. ERR.MSG%=-1
  692. SOUND 500,SD.SS%*1:LOCATE 25,INT(81-LEN(MSG.SS$))/2
  693. COLOR 0,7
  694. PRINT MSG.SS$;
  695. LOCATE LO.SS%(F.SS%,1),CURCOL%
  696. WHILE INKEY$<>""
  697. WEND
  698. RETURN
  699. ADDCHARACTERS:
  700. IF TY.SS$(F.SS%)="N" AND NEWNUM% THEN
  701.     MID$(VL.SS$(F.SS%),1)=MID$(BLNK.SS$,1,A.SS%-1)+X.SS$+_
  702.     "."+STRING$(LE.SS%(F.SS%),"0")
  703.     NEWNUM%=0
  704.     RETURN
  705. END IF
  706. AGAIN:
  707. IF TY.SS$(F.SS%)<>"N" OR NUMED.SS%=-1 THEN
  708.     MID$(VL.SS$(F.SS%),A.SS%,1)=X.SS$
  709.     RETURN
  710. END IF
  711. IF LEFT$(VL.SS$(F.SS%),1)=" " THEN
  712.     MID$(VL.SS$(F.SS%),1,A.SS%)=MID$(VL.SS$(F.SS%),2,A.SS%-1)+X.SS$
  713.     ELSE
  714.     NUMED.SS%=-1
  715.     GOTO AGAIN
  716. END IF
  717. RETURN
  718. PRINTNEWVALUEOFFIELD:
  719. COLOR CL.SS%(F.SS%,1),CL.SS%(F.SS%,2)
  720. LOCATE LO.SS%(F.SS%,1),LO.SS%(F.SS%,2)
  721. PRINT VL.SS$(F.SS%);
  722. RETURN
  723. NEWLOCATION:
  724. IF TY.SS$(F.SS%)<>"N" OR NUMED.SS%<>0 THEN NUMERICTYPE
  725. IF LEFT$(VL.SS$(F.SS%),1)<>" " THEN
  726.     NUMED.SS%=-1
  727.     ELSE
  728.     A.SS%=DECPOS%-1
  729.     CURCOL%=LO.SS%(F.SS%,2)+A.SS%-1
  730.     LOCATE LO.SS%(F.SS%,1),CURCOL%
  731.     RETURN
  732. END IF
  733. NUMERICTYPE:
  734. IF A.SS%<LE.SS%(F.SS%) THEN
  735.     A.SS%=A.SS%+1
  736.     CURCOL%=CURCOL%+1
  737.     ELSE
  738.     GOSUB DOWN
  739.     RETURN
  740. END IF
  741. IF INSTR("ULX#89",MID$(PIC.SS$(F.SS%),A.SS%,1))=0 THEN NUMERICTYPE
  742. LOCATE LO.SS%(F.SS%,1),CURCOL%
  743. RETURN
  744. CREATELESSONFILE:
  745. TOP1:
  746. KEY OFF
  747. COLOR 14,0
  748. CLS
  749. START=2
  750. LOCATE START,1
  751. PRINT"LESSON PLAN CREATE MODULE"
  752. COLOR 3,0
  753. LOCATE START+2,1
  754. PRINT"This program will create a new LESSON PLAN file"
  755. PRINT"and will overwrite any existing file.
  756. LOCATE START+4,1
  757. PRINT"Are you sure you want to continue? (YES/NO) ";
  758. INPUT C$
  759. C$ = UCASE$(C$)
  760. IF C$="YES" THEN OKTOCONTINUE
  761. IF C$="NO" THEN BAILOUT
  762. BEEP
  763. GOTO TOP1
  764. OKTOCONTINUE:
  765. LOCATE START+6,1
  766. PRINT"How many records (school days) will you need ";
  767. COLOR 4,0
  768. PRINT"(180) ";
  769. COLOR 3,0
  770. INPUT SD
  771. IF SD=0 THEN
  772.     SD=180
  773.     LOCATE START+6,52
  774.     PRINT SD
  775. END IF
  776. LOCATE START+8,1
  777. PRINT"You will need"SD*3*40*12"bytes of disk space for lesson.fil."
  778. LOCATE START+10,1
  779. PRINT"If this is a problem, press [ESC] or any other key to continue.";
  780. INLOOP:
  781. C$=INKEY$
  782. IF C$="" THEN INLOOP
  783. IF C$=CHR$(27) THEN
  784.     LOCATE START+12,1
  785.     COLOR 4,0
  786.     PRINT"ROUTINE ABORTED!"
  787.     COLOR 3,0
  788.     GOTO BAILOUT
  789. END IF
  790. LOCATE START+12,1
  791. PRINT"Now creating file...please wait."
  792. OPEN"r",1,"lesson.fil",480
  793. FIELD 1,480 AS B$
  794. for i=1 to 12
  795.     a$(i)=STRING$(40," ")
  796. next
  797. a$(1)="OBJTVS:                                 "
  798. A$(5)="MTHDS:                                  "
  799. A$(10)="HMWK:                                   "
  800. FOR I=1 TO 12
  801.     A$=A$+A$(I)
  802. NEXT
  803. FOR I=1 TO SD*3
  804.     LSET B$ = A$
  805.     PUT 1,I
  806.     IF I/3=INT(I/3) THEN
  807.         R=R+1
  808.         LOCATE START+14,1
  809.         PRINT"Finished with record";
  810.         COLOR 14,0
  811.         PRINT R;
  812.         COLOR 3,0
  813.     END IF
  814. NEXT I
  815. CLOSE
  816. cls
  817. color 14,0
  818. locate 5,30
  819. ? "Course Information"
  820. ph$="Name/School/Room(s)"
  821. CALL USERINPUT(ph$,7,30,40,3,0,3,0,3,0,254,177," ",3)
  822. a$(1)=sysalpha$
  823. for i% = 2 to 4
  824.     color 14,0
  825.     ph$="Course Info for Prep "+str$(i%-1)+":"
  826.     CALL USERINPUT(ph$,8+i%,40,25,3,0,3,0,3,0,254,177," ",3)
  827.     if sysalpha$ ="" then sysalpha$ = "None"
  828.     a$(i%) = sysalpha$
  829. next
  830. open"o",1,"teco.fil"
  831. print#1,sd
  832. for i% = 1 to 4
  833.     print#1,chr$(34)a$(i%)chr$(34)
  834. next
  835. close
  836. BAILOUT:
  837. close
  838. RUN
  839. HELP:
  840. CLS
  841. COLOR 12,0
  842. ?"LESSON PLAN HELP SCREEN"
  843. COLOR 3,0
  844. ?"I.   STEP 1"
  845. ?"     A. Select Create"
  846. ?"        1. This will set up your files."
  847. ?"        2. Only use this the first day you use LESSON PLANS."
  848. ?"II.  STEP 2"
  849. ?"     A. Select Enter"
  850. ?"        1. Keep a calandar with the number of the lesson day marked on it."
  851. ?"        2. You may enter THREE preparations maximum for each lesson day."
  852. ?"        3. Full screen editing is supported. Press ESC when finished with"
  853. ?"           a prep. The next prep will appear for that lesson day."
  854. ?"III. STEP 3"
  855. ?"     A. Select Print"
  856. ?"        1. Fill-in the required information for the week.fil"
  857. ?"           a. inclusive - range of dates (max is 5)"
  858. ?"           b. # of days - max is 5"
  859. ?"           c. days and dates - max is 5"
  860. ?"        2. Press ESC or RETURN on the last day/date line"
  861. ?"        3. Input which lesson day to start with."
  862. ?"        4. Input which condensed font control code (IBM, Tandy, None)"
  863. ?"        5. Printing will start...You may press ESC to abort printing."
  864. ?"IV.  STEP 4"
  865. ?"     A. Select Quit"
  866. COLOR 12,0
  867. ?"Press any key to return to menu";
  868. ak$ = input$(1)
  869. close
  870. run
  871. SUB USERINPUT (prompt$,row%,col%,fldsiz%,fldfg%,fldbg%,cursfg%,cursbg%,chrfg%,chrbg%,fldchr%,curchr%,filchr$,systyp%)
  872. SHARED SYSNUM,SYSALPHA$
  873. SYSALPHA$=""
  874. LOCATE ROW%,COL%-LEN(PROMPT$)-1
  875. ? PROMPT$
  876. LOCATE ROW%,COL%
  877. FOR X=1 TO FLDSIZ%
  878.     COLOR FLDFG%,FLDBG%
  879.     PRINT CHR$(FLDCHR%);
  880. NEXT X
  881.  
  882. MAINLOOP:
  883.  
  884.     IF FLDSIZ% = LEN(SYSALPHA$) THEN LOOKFORAKEY
  885.     LOCATE ROW%,COL%
  886.     COLOR CURSFG%,CURSBG%
  887.     PRINT CHR$(CURCHR%);
  888.     LOCATE ROW%,COL%
  889.  
  890. LOOKFORAKEY:
  891.  
  892.     STROKE$ = INKEY$
  893.     IF LEN(SYSALPHA$) <> FLDSIZ% THEN LESSTHANFIELDSIZE
  894.     LOCATE ROW%,COL%-1
  895.     COLOR CHRFG%,CHRBG%
  896.     PRINT RIGHT$(SYSALPHA$,1);
  897.     delay .1
  898.     LOCATE ROW%,COL%-1
  899.     COLOR CURSFG%,CURSBG%
  900.     PRINT CHR$(CURCHR%);
  901.     delay .1
  902.  
  903. LESSTHANFIELDSIZE:
  904.  
  905.     IF STROKE$ = "" THEN LOOKFORAKEY
  906.     IF STROKE$ = CHR$(13) THEN USERISFINISHED
  907.     IF STROKE$ = CHR$(8) AND LEN(SYSALPHA$) = 0 THEN LOOKFORAKEY
  908.     IF STROKE$ = CHR$(8) AND LEN(SYSALPHA$) = FLDSIZ% THEN LOCATE ROW%,COL%-1
  909.     IF STROKE$ = CHR$(8) THEN
  910.         COLOR FLDFG%,FLDBG%
  911.         PRINT CHR$(FLDCHR%);
  912.         COL% = COL% - 1
  913.         SYSALPHA$ = LEFT$(SYSALPHA$,LEN(SYSALPHA$)-1)
  914.         GOTO MAINLOOP
  915.     end if
  916.     IF SYSTYP% = 1 OR SYSTYP% = 3 THEN ALPHANUMERICFIELD
  917.     IF SYSTYP% = 2 THEN NUMERICFIELD
  918.     SYSTYP% = 1
  919.  
  920. ALPHANUMERICFIELD:
  921.  
  922.     IF STROKE$ < CHR$(32) OR STROKE$ > CHR$(126) THEN
  923.         GOTO LOOKFORAKEY
  924.         ELSE
  925.         GOTO ADDKEY
  926.     end if
  927.  
  928. NUMERICFIELD:
  929.  
  930.     IF STROKE$ < CHR$(48) OR STROKE$ > CHR$(57) THEN
  931.         GOTO LOOKFORAKEY
  932.         ELSE
  933.         GOTO ADDKEY
  934.     end if
  935.  
  936. ADDKEY:
  937.  
  938.     IF FLDSIZ% = LEN(SYSALPHA$) THEN LOOKFORAKEY
  939.     SYSALPHA$ = SYSALPHA$ + STROKE$
  940.     COLOR CHRFG%,CHRBG%
  941.     PRINT STROKE$;
  942.     COL% = COL% + 1
  943.     GOTO MAINLOOP
  944.  
  945. USERISFINISHED:
  946.  
  947.     IF LEN(SYSALPHA$) <> FLDSIZ% THEN
  948.         LOCATE ROW%,COL%
  949.         COLOR FLDFG%,FLDBG%
  950.         PRINT CHR$(FLDCHR%);
  951.         GOTO WHICHFILL
  952.     end if
  953.     LOCATE ROW%,COL%-1
  954.     COLOR CHRFG%,CHRBG%
  955.     PRINT RIGHT$(SYSALPHA$,1);
  956.  
  957. WHICHFILL:
  958.  
  959.     IF SYSTYP% = 1 THEN ALPHARIGHT
  960.     IF SYSTYP% = 2 THEN NUMBERS
  961.     IF SYSTYP% = 3 THEN ALPHALEFT
  962.     SYSTYP% = 3
  963.     GOTO ALPHALEFT
  964.  
  965. ALPHARIGHT:
  966.  
  967.     FOR X = 1 TO FLDSIZ%
  968.         SYSFIL$ = SYSFIL$ + FILCHR$
  969.     NEXT X
  970.     SYSFIL$ = RIGHT$(SYSFIL$,FLDSIZ%)
  971.     SYSALPHA$ = SYSFIL$ + SYSALPHA$
  972.     SYSALPHA$ = RIGHT$(SYSALPHA$,FLDSIZ%)
  973.  
  974. ALPHALEFT:
  975.  
  976.     FOR X = 1 TO FLDSIZ%
  977.         SYSFIL$ = SYSFIL$ + FILCHR$
  978.     NEXT X
  979.  
  980. NUMBERS:
  981.  
  982.       IF SYSTYP% = 2 THEN SYSNUM = VAL(SYSALPHA$)
  983.  
  984.  
  985.  
  986. END SUB
  987.  
  988. SUB DRAWIT(Fg,Bg,UlRow,UlCol,LrRow,LrCol)
  989.  
  990. if LrRow < UlRow then swap LrRow,UlRow
  991. if UlRow < 1 then UlRow = 1
  992. if UlRow > 24 then UlRow = 24
  993. if LrRow < 1 then LrRow = 1
  994. if LrRow > 24 then LrRow = 24
  995. if LrCol < UlCol then swap LrCol,UlCol
  996. if UlCol < 1 then UlCol = 1
  997. if UlCol > 79 then UlCol = 79
  998. if LrCol < 1 then LrCol = 1
  999. if LrCol > 79 then LrCol = 79
  1000. if UlRow = LrRow or UlCol = LrCol then TESTWHICH
  1001.  
  1002. color fg,bg
  1003. locate UlRow,UlCol : ? chr$(201);
  1004. for i% = UlCol + 1 to LrCol : ? chr$(205);: next
  1005. locate UlRow,LrCol : ? chr$(187);
  1006. for i% = UlRow + 1 to LrRow : locate i%,LrCol : ? chr$(186);:next
  1007. locate LrRow,LrCol : ? chr$(188);
  1008. for i% = LrCol - 1 to UlCol + 1 step -1
  1009. locate LrRow,i% : ? chr$(205);:next
  1010. locate LrRow,UlCol : ? chr$(200);
  1011. for i% = LrRow - 1 to UlRow + 1 step -1
  1012. locate i%,UlCol : ? chr$(186);:next
  1013. exit sub
  1014.  
  1015. TESTWHICH:
  1016. if UlRow = LrRow and UlCol <> LrCol then HORIZONTALINE
  1017. if UlRow <> LrRow and UlCol = LrCol then VERTICALINE
  1018.  
  1019. locate UlRow,UlCol
  1020. color fg,bg
  1021. ? chr$(206);
  1022. exit sub
  1023.  
  1024. VERTICALINE:
  1025. color fg,bg
  1026. locate UlRow,UlCol : ? chr$(203);
  1027. for i% = UlRow + 1 to LrRow
  1028. locate i%,UlCol : ? chr$(186);:next
  1029. locate LrRow,LrCol : ? chr$(202);
  1030. exit sub
  1031.  
  1032. HORIZONTALINE:
  1033. color fg,bg
  1034. locate UlRow,UlCol : ? chr$(204);
  1035. for i% = UlCol + 1 to LrCol - 1
  1036. locate UlRow,i% : ? chr$(205);:next
  1037. ? chr$(185);
  1038.  
  1039. end sub
  1040.  
  1041.  
  1042. TRAP:
  1043.  
  1044. resume MENU